草庐IT

python - Python中模块和类的区别

全部标签

ruby - Ruby 模块包含为什么不是真正的 'multiple inheritance' 以及 Ruby 风格如何避免与多重继承相关的问题?

据说Matz说“mixins几乎可以做多重继承做的所有事情,而没有相关的缺点”(Matz的话)。首先,为什么Ruby模块包含不是“多重继承”?在我看来,模块和类之间的区别很小。当模块用作父类(superclass)时,不能实例化模块这一事实是无关紧要的。我也知道,连续的模块包含形成了一个从类向上延伸的继承链(不是树)。但是,对我来说,这不足以将它与“多重继承”区分开来,因为Python多重继承系统也“线性化”了父类(superclass)链(使用C3algorithm),只是Ruby的“线性化”过程要简单得多。那么,Ruby模块混入与Python等语言中的多重继承究竟有什么区别呢?为什

ruby-on-rails - 测试使用 ActiveRecord 的关注点/模块

场景我提取了一个名为Taggable的关注点。它是一个允许任何模型支持标记的模块。我已将此关注点/模块包含到模型中,例如User、Location、Places、Projects。我想为这个模块编写测试,但不知道从哪里开始。问题1。我可以对Taggable问题进行隔离测试吗?在下面的示例中,测试失败是因为测试正在查找dummy_class表。我假设它这样做是因为Taggable中的has_many代码,因此它期望'DummyClass'是一个ActiveRecord对象。#/app/models/concerns/taggable.rbmoduleTaggableextendActiv

ruby - 在 ruby​​ 中,self.method 和类 << self 中的方法有什么区别

classFoodefself.one;1endclass["two","one"]有人告诉我上述方法“一”和“二”在概念上是不同的,但我不明白是怎么回事。它们都是单例方法-在概念和应用上有什么区别? 最佳答案 在应用上,没有区别。在概念上,区别是微妙的,但在第一种情况下,您是在当前上下文中操作,并在另一个类实例上定义一个方法(实际上是其Eigenclass中的实例方法),而在第二种情况下,您正在进入其他类实例的元类(“Eigenclass”)的上下文,然后定义一个实例方法。编辑:我应该补充说选择class的原因在某些情况下是...

ruby - Ruby 核心 API 和标准库 API 有什么区别?

RubyDoc有两个部分:核心和标准。核心是默认的,标准有额外的库/方法等。这是否意味着我必须要求这些标准库才能使用它们?我是这么想的,不需要任何东西就从标准库中选择了DateTime.now,它成功了。 最佳答案 是的,你没看错。核心功能是您无需要求即可使用的一切。DateTime似乎不在核心中(你是在Rails控制台中运行你的代码行吗?)DateTime.now#=>#~>-:1:in`':uninitializedconstantDateTime(NameError)但是时间是Time#=>TimeTime.now#=>201

ruby-on-rails - Rails 中的 render 和 yield 有什么区别

有人可以解释“”和“与/”之间的区别吗?特别是当从一个切换到另一个时路由如何变化,使用一个优于另一个的好处,什么时候使用一个优于另一个。THIS是我找到的最接近的解释,但对我来说还不够清楚。几天来我一直在努力解决这个问题,但似乎我尝试的每个配置要么接近,要么出错。如果有三个View,aaa和bbb和ccc,每个都有一个index.html.erb,但是bbb和ccc有一个_content.html.erb部分(由下划线表示)你如何才能完成获得bbb或ccc部分在aaa使用render或yield?以下作品:aaa的index.html.erb:和bbbs_content.html/er

ruby - Python itertools 的 Ruby 等价物是什么,尤其是。组合/排列/groupby?

Python的itertools模块提供了很多关于使用生成器处理可迭代/迭代器的好东西。例如,permutations(range(3))-->012021102120201210combinations('ABCD',2)-->ABACADBCBDCD[list(g)fork,gingroupby('AAAABBBCCD')]-->AAAABBBCCDRuby中有哪些等价物?等效的,我的意思是快速和内存高效(Python的itertools模块是用C编写的)。 最佳答案 Array#permutation、Array#combin

ruby - 内省(introspection)模块类时 "#map(&proc)"习惯用法如何工作?

呈现成语我找到了一个interestingbutunexplainedalternative到一个公认的答案。该代码在REPL中显然有效。例如:moduleFooclassBardefbazendendendFoo.constants.map(&Foo.method(:const_get)).grep(Class)=>[Foo::Bar]但是,我并不完全理解这里使用的成语。特别是,我不明白&Foo的用法,它似乎是某种闭包,或者#grep的这种特定调用如何对结果进行操作。解析成语到目前为止,我已经能够解析其中的点点滴滴,但我并没有真正看到它们是如何组合在一起的。以下是我认为对示例代码的理

ruby - 判断祖先是Ruby中的类还是模块的方法?

如果我有一个像下面这样的类,我如何判断祖先是类还是模块?ActiveRecord::Base.send(:include,SomeLibrary)classGroup["SubGroup","SomeLibrary::Core::InstanceMethods","SomeLibrary::Core","Group","ActiveRecord::Base","SomeLibrary","ActiveRecord::Aggregations","ActiveRecord::Transactions","ActiveRecord::Reflection","ActiveRecord::B

ruby - "extend self"是实用模块的反模式吗?

关闭。这个问题是opinion-based.它目前不接受答案。想改善这个问题吗?更新问题,以便可以通过editingthispost用事实和引文回答问题.7年前关闭。ImprovethisquestionSteveKlabnik最近在pullrequest中说对于实用程序模块:[Thecode]obscuresthefactthattheseareclassmethods,andwewanttousethemthatway.Plus,Ithinkthatextendselfisgenerallyananti-pattern,andshouldn'treallybeusedexcepti

Ruby 使用命名空间/模块

例如:require'net/http'uri=URI('http://example.com/some_path?query=string')Net::HTTP.start(uri.host,uri.port)do|http|request=Net::HTTP::Get.newuriresponse=http.requestrequest#Net::HTTPResponseobjectend摆脱Net::HTTP的正确/rubist方法是什么?即HTTP::Get.new()或只是Get.new() 最佳答案 如果你想缩短这些,你